import cv2
import numpy as np

#仿射
img = cv2.imread('img/dog.jpg')
# 图片属性
h, w, ch = img.shape

# 矩阵中的每个像素由(x,y)组成
# 因此，其变换矩阵是2x2的矩阵
# 平移向量为2x1的向量，所在平移矩阵为2x3矩阵

# 横向平移
# M = np.float32([[1, 0, 100], [0, 1, 0]])
# 纵向平移
# M = np.float32([[1, 0, 100], [0, 1, 100]])

# 变换矩阵 第一个参数是坐标 第二个参数是角度 第三个参数是缩放比例
# M = cv2.getRotationMatrix2D((w / 2, h / 2), 90, 0.5)

# 变换矩阵 2
src = np.float32([[400,300], [800,300], [400,1000]])
dst = np.float32([[200,400], [600,500], [150,1100]])
M = cv2.getAffineTransform(src, dst)

# 如果想改变新图像尺寸，需要修改dsize参数
# new = cv2.warpAffine(img, M, (int(w/2), int(h/2)))
new = cv2.warpAffine(img, M,(w, h))

cv2.imshow("img", img)
cv2.imshow("new", new)
cv2.waitKey(0)